In computing systems, firmware generally executes natively on hardware to internally control various electronic devices. In contrast to higher level software which could be changed without replacing a computer hardware component, firmware is typically involved with very basic low-level operations, without which a device would be non-functional. In other words, firmware is generally used to track and control native hardware operations, and to otherwise provide the interface between that hardware and other, higher level software systems.
Occasionally, it is necessary to update firmware that is executing on a computing system. Doing so usually involves loading a binary image file of the new firmware, provided by the manufacturer, into the device, according to a specific procedure. Typically, this involves overwriting existing firmware in a flash memory or other persistent memory, and restarting the computing system to cause the new firmware to effectively “take control” of the target hardware resource. This is because firmware operates directly on computing hardware resources, and it can be the state of those hardware resources is not communicated from the firmware to be replaced to the new, replacement firmware.
This general firmware replacement process has drawbacks, in particular in large-scale or server computing environments. For example, in rack server or mainframe systems, it may take a long time to restart the computing system once the firmware is updated. For example, a complete reboot process on a mainframe system may require minutes, or more likely tens of minutes, before the system can shut down, restart, and reload each of the workloads that were executing on the system at the time of the restart. Furthermore, aside from the delay in restarting the workload, the system state at the time of the restart is not preserved, so some portion of a workload may need to be reexecuted or risk being lost or unexecuted. For critical workloads, it may be important that the workload not be interrupted, or at least not be interrupted for a long period of time.
For these and other reasons, improvements are desirable.